// WeakMap弱映射
// 与Map类型的键值对的存储集合引用类型，其“弱”体现在垃圾回收机制上

// 1.创建=>构造函数，参数为可迭代对象，其包含键值对数组(对象嵌套键值对数组)，按顺序创建弱映射
const A={
    "index":1
}
const weakmap=new WeakMap([[A,"a"]]);
// 键的类型必须为对象，若需采用原始值，需进行原始值的包装，值的类型为任意类型

// 2.方法与属性
weakmap.delete(A);
// 参数为键，按键删除弱映射中的键值对，删除成功返回true，未找到返回false
weakmap.set([1,2],"num");
// 两个参数为对应的键与值，向弱映射中新增键值对，返回新增后的弱映射
weakmap.has(A);
// 参数为键，按键查找弱映射，返回值为布尔值
weakmap.get([1,2]);
// 参数为键，按键查找弱映射，返回值为对应键的值，未找到返回undefined

// 3.垃圾回收
// 当弱映射中的键(对象)没有对它的引用之后(如该对象为空对象或是变为空对象后)，则会触发垃圾回收，弱映射中的键被删除,键值对也随之删除

// 4.适用条件
// (1)与函数闭包合用，实现变量私有化
// (2)利用垃圾回收机制，存储Dom节点的元数据